package jdk7.binary;


/**
 * Description: jdk1.7新特性：二进制字面值（Binary Literals）
 * 二进制变量的表示，整形(byte,short,int,long)类型的值可以用二进制类型来表示了，用0b开头。
 * 其次，二进制同十进制和十六进制相比，可以一目了然的看出数据间的关系。
 * 如果用十六进制来表示的，它们之间的关系就无法一眼看出来了。
 * 
 * 要以0b开头，可以四位四位加下划线_
 * 
 * 个人认为：一般有用吧，感觉很少会接触到二进制了现在
 * @author Kwum
 * @date 2017年6月26日 下午3:41:51
 * @version 1.0
 */

public class Run {

    public static void main(String args[]){
        // 所有整数 int， short，long，byte都可以用二进制表示
        // An 8-bit 'byte' value:
        byte aByte = (byte) 0b0000_0001;

        // A 16-bit 'short' value:
        short aShort = (short) 0b0000_0000_0000_0011;

        // Some 32-bit 'int' values:
        int anInt1 = 0b0000_0000_0000_0000_0000_0000_0000_0001;
        int anInt2 = 0b100;
        int anInt3 = 0B101; // The B can be upper or lower case.
        int anInt4 = 0B10; // The B can be upper or lower case.
        int anInt5 = 0B0; // The B can be upper or lower case.

        // A 64-bit 'long' value. Note the "L" suffix:
        long aLong = 0b1010000101000101101000010100010110100001010001011010000101000101L;

        // 二进制在数组等的使用
        final int[] phases = { 0b00110001, 0b01100010, 0b11000100, 0b10001001,
        0b00010011, 0b00100110, 0b01001100, 0b10011000 };
        
        System.out.println(aByte);
        System.out.println(aShort);
        System.out.println(anInt1);
        System.out.println(anInt2);
        System.out.println(anInt3);
        System.out.println(anInt4);
        System.out.println(anInt5);
        System.out.println(aLong);
        for(int i : phases){
            System.out.println(i);
        }
    }
}
